Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.10.2010, 18:04
Кандидат Javascript-наук
Отправить личное сообщение для kefi Посмотреть профиль Найти все сообщения от kefi
 
Регистрация: 12.03.2009
Сообщений: 148

О URLкодировке с помощью encodeURIComponent
Помогите разобраться.
Начну с малого :

Вот RFC при отправке данных формы говорит, что нужно '&' кодировать, как & (или как '&#38 ;'), если он встречается среди значений полей, но при формировании GET запроса в MSXML2.XMLHTTP для oXMLHTTP.setRequestHeader 'Content-type', 'application/x-www-form-urlencoded' рекомендуется использовать encodeURIComponent(FieldWithAmp) , где FieldWithAmp - поле содержащее '&' ( encodeURIComponent('&')=='%26' , т.е. не дает encodeURIComponent требуемого в RFC '&#38 ;' )

Как это объяснить, как все-таки правильно URL кодировать при GET запросе и 'Content-type', 'application/x-www-form-urlencoded' ?

Последний раз редактировалось kefi, 11.10.2010 в 18:08.
Ответить с цитированием
  #2 (permalink)  
Старый 11.10.2010, 18:34
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

var string = encodeURIComponent('&'); // "%26"
window.location = 'http://example.com/?string='+string; //example.com/?string=%26


и тут почитать

Последний раз редактировалось monolithed, 11.10.2010 в 18:37.
Ответить с цитированием
  #3 (permalink)  
Старый 11.10.2010, 18:53
Кандидат Javascript-наук
Отправить личное сообщение для kefi Посмотреть профиль Найти все сообщения от kefi
 
Регистрация: 12.03.2009
Сообщений: 148

2 monolithed> не проясняет что-то - Вы смотрели ли ссылку на RFC по HTML, приведеную в первом посте? Вопрос связан с ней.
Ответить с цитированием
  #4 (permalink)  
Старый 11.10.2010, 20:18
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Для отправки запроса методом GET используется encodeURIComponent
alert('http://example.com/?id='+encodeURIComponent('Procter&Gamble'));


Если в коде страницы присутствуют спецсимволы типа &, то их нужно заменять на & (или как '&#38 ;') или же если данные формы посылаются методом POST и пр.
Ответить с цитированием
  #5 (permalink)  
Старый 11.10.2010, 20:36
Аватар для subzey
Пионэр
Отправить личное сообщение для subzey Посмотреть профиль Найти все сообщения от subzey
 
Регистрация: 16.11.2009
Сообщений: 1,322

Не путайте! Url-кодирование - часть стандарта http, сущности (&... - часть стандарта html. Эти технологии хоть и сопряжены, но не одно и то же.
Ответить с цитированием
  #6 (permalink)  
Старый 11.10.2010, 21:25
Кандидат Javascript-наук
Отправить личное сообщение для kefi Посмотреть профиль Найти все сообщения от kefi
 
Регистрация: 12.03.2009
Сообщений: 148

Сообщение от monolithed Посмотреть сообщение
Для отправки запроса методом GET используется encodeURIComponent
alert('http://example.com/?id='+encodeURIComponent('Procter&Gamble'));


Если в коде страницы присутствуют спецсимволы типа &, то их нужно заменять на & (или как '&#38 ;') или же если данные формы посылаются методом POST и пр.
Так и не понял :
нужно вместо
alert('http://example.com/?id='+encodeURIComponent('Procter&Gamble'));

использовать
alert('http://example.com/?id='+encodeURIComponent('Procter&Gamble'));

?

Сообщение от subzey
Не путайте! Url-кодирование - часть стандарта http, сущности (&... - часть стандарта html. Эти технологии хоть и сопряжены, но не одно и то же.
Так объясните как не путать - все же как правильно ?
Или , Дайте , плз, ссылку, где ясно расписано без монбланов RFC, как все же нужно URL кодировать URL'ы при отправке данных формы методом GET ?
Ответить с цитированием
  #7 (permalink)  
Старый 11.10.2010, 21:31
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Ну попробуйте и так и так, если не понимаете. Как заработает, так и делайте.
Ответить с цитированием
  #8 (permalink)  
Старый 11.10.2010, 21:39
Кандидат Javascript-наук
Отправить личное сообщение для JAre Посмотреть профиль Найти все сообщения от JAre
 
Регистрация: 29.06.2009
Сообщений: 111

w3.org говорит, что для xml и прочих стандарт это & а всё, что кроме это происки M$
Ответить с цитированием
  #9 (permalink)  
Старый 11.10.2010, 21:59
Кандидат Javascript-наук
Отправить личное сообщение для kefi Посмотреть профиль Найти все сообщения от kefi
 
Регистрация: 12.03.2009
Сообщений: 148

2 JAre> Где именно говорит ? ткните пальцем.
Дело в том, что RFC по HTTP и по HTML при описании URI ссылаются на RFC1738 и новый RFC2396 по URI, где черт ногу сломит, но вот как
Спецификация HTML 4.01 интерпретирует URL кодирование :
Имена ЭУ и значения переводятся в escape-последовательности. Символы пробелов заменяются `+', и затем зарезервированные символы переводятся в escape-последовательности, как описано в [RFC1738], раздел 2.2:
Неалфавитные символы заменяются `%HH', знаком процента и двумя 16-ричными цифрами, представляющими ASCII-код символа.

и тд ....

Т.е., скажем, для "И" русской encodeURIComponent дает %D0%98 - четверка 16-ных символов, а по написанному выше выходит, что должны быть только ДВА шестнадцатиричных символа : "И" -> %C8
И как это понять ?
Ответить с цитированием
  #10 (permalink)  
Старый 11.10.2010, 22:28
Кандидат Javascript-наук
Отправить личное сообщение для JAre Посмотреть профиль Найти все сообщения от JAre
 
Регистрация: 29.06.2009
Сообщений: 111

Ну в спеке по xml есть вот, что "The ampersand character (&) and the left angle bracket (<) must not appear in their literal form, except when used as markup delimiters, or within a comment, a processing instruction, or a CDATA section. If they are needed elsewhere, they must be escaped using either numeric character references or the strings " &amp; " and " &lt; " respectively."
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как с помощью PHP сохранить какие-либо изменения в HTML документе? FirstFrost Работа 6 06.09.2010 16:16
Флэш-мульты на странице с помощью javascript SuperStar Элементы интерфейса 3 28.08.2010 10:56
Как с помощью PHP сохранить какие-либо изменения в HTML документе? FirstFrost Общие вопросы Javascript 1 15.07.2010 17:12
Прокрутка страницы с помощью клавиш Mirgorod Events/DOM/Window 0 17.06.2010 22:39
Проверка наличия логина в БД при регистрации, с помощью ajax storng Общие вопросы Javascript 4 09.04.2010 20:24